Vorhersage der Weinqualität von Vinho Verde


drawing

Dieses Jupyter Notebook widmet sich der Vorhersage von Weinqualität des Vinho Verde.

Vinho Verde, oder auch der grüne Wein ist ein junger portugisischer Wein, der aus den Anbaugebieten zwischen den Flüssen Douro und Minho im Norden Portugals stammt.

Als Rebsorten dienen unter anderem Alvarinho, Avesso, Loureiro und Trajadura. Gelegentlich wird auch die Rebsorte Sercial verwendet.

Das Leben ist zu kurz, um schlechten Wein zu trinken.
- Johann Wolfgang von Goethe.

Durchlauf für Professoren und Kommilitonen

Um die Trainingsprozesse zu verkürzen kann man einen Schnelldurchlauf aktivieren. Dieser wurde aus den Ergebnissen des Hyperparametertrainings erstellt und enthält bereits beschränkte Parameterbereiche, die zu einem ausreichend guten Ergebnis führen. Dies verkürzt die Laufzeit von Stunden auf <3 Minuten. Die kompletten Durchläufe befinden sich in den CSV-Datei in dem "results" Ordner.

Die Evaluation/Ergebnisse richten sich nach diesen CSV-Dateien.

Imports

Hilfsfunktionen

Definierte Hilfsfunktionen (hauptsächlich für Grafiken), um ein flüssigeres Lesen zu ermöglichen.

Datensatz einlesen

Datenanalyse

Der Datensatz stammt aus dem Machine Learning Repository des UCI und wurde dort am 07.10.2009 eingetragen. Er enthält jeweils Daten für Weiswein und Rotwein des Vinho Verde, wobei für dieses Jupyter Notebook lediglich der Datensatz der Weisweine relevant ist.

Der Datensatz enthält 12 verschiedene Attribute, dabei wurden für diese Arbeit die ersten 11 Attribute zu Featuren deklariert und das letzte Attribut - Quality - zur Zielvariable. Für den Weiswein Datensatz gibt es 4898 Datenpunkte.

Anzumerken ist, dass die Qualität von Weinexperten evaluiert wurde. Dies bedeutet, dass die Weinqualität anhand subjektiven Wahrnehmungen der Experten bestimmt wurde.

Quelle:
[Cortez et al., 2009]

Attribut Erläuterung Einheit
Fixed Acidity Weinsäuren, welche in festem und nichtflüchtigen Zuständen vorkommen g/dm3
Volatile Acidity Essigsäure, welche in hohen Konzentrationen zu einem Essiggeschmack führen g/dm3
Citric Acid Zitronensäure, welche Weinen in geringer Quantität frische verleihen g/dm3
Residual Sugar Zucker, welcher nach der Gärung verbleibt. g/dm3
Chlorides Salzgehalt des Weins g/dm3
Free Sulfur Dioxide Schwefeldioxid welches als gelöstes Gas und Bisulfit Ion vorkommen.
Es verhindert mikrobielles Wachstum und die Oxidation des Weins
g/dm3
Total Sulfur Dioxide Gesamtmenge des Schwefeldioxid in freier und gebundener Form. g/dm3
Density Dichte g/cm3
pH Gibt die Säure bzw. Base der Lösung an.
1 = sehr sauer
bis 14 = sehr basisch
Diskreter Wert
zwischen 1-14
Sulphates Sulphate, die als Zusatz zum Wein gegeben werden und
zum Gehalt der Schwefeloxiden beiträgt
, welche antimikrobiell und antioxidativ wirken
g/dm3
Alcohol Alkoholgehalt des Weins Volumenprozent
Quality Median der Weinqualität aus 3 Evaluationen gegeben von Weinexperten
1 = Schlecht
10 = Sehr Gut
Diskreter Wert
zwischen 1-10

Daten Vorverarbeitung

In der Betrachtung der Features im Pairplot sind keine generellen Aufteilungen zu erkennen. Im Vergleich zur Zielvariable - der Weinqualität("quality") - sieht man bei den meisten Features keine großartigen Verschiebungen. Beim Feature Alkohol("alcohol") sieht man eine leichte Verschiebung der Normalverteilungen pro Weinqualität. Es scheint so, als würde ein größerer Alkoholwert eine bessere Weinqualität ausmachen.

Desweiteren sind starke Ausreißer zu erkennen.

Die folgenden Grafiken verdeutlichen, dass die starken Ausreißer teilweise einen vielfach größeren Wert besitzen als die meisten ihres Features. Gerade bei dem Salzgehalt("chlorides"), dem Zucker nach der Gärung("residual sugar") und dem Schwefeldioxid("free sulfur dioxide") ist dies sehr gut zu erkennen. Da diese Werte höchst unwahrscheinlich sind und höchstwahrscheinlich Mess- oder Produktionsfehler darstellen, sollten diese vom Datensatz entfernt werden, da einige Algorithmen stark durch Ausreißer beeinflusst werden.

Ebenso ist anzumerken, dass die Zielvariable höchst unausgeglichen verteilt ist. Es ist deutlich zu erkennen, dass die Klasse $6$ am häufigsten vorkommt und fast gleich viel Datenpunkte beinhaltet wie die zweit und dritthäufigste Klassen $5$ und $7$ zusammen. Dazu sind die Klassen $\leq 4$ und $\geq 8$ fast gar nicht vertreten.

Erkennung und Entfernung von Ausreißer

Wie in der oberen Grafik zu sehen ist, befinden sich im Datensatz einige Ausreißer. Zum Detektieren und Entfernen von Ausreißern werden meist die Standard Deviation Methode und die IQR-Methode verwendet.

Quelle:

IQR-Methode

Bei der Interquartile Range Methode, kurz $\mathit{IQR}$, wird zunächst der Wert des $\mathit{IQR}$ bestimmt, welcher durch die Differenz des 3. und 1. Quartils berechnet wird. Als Ausreißer werden in der Regel Datenpunkte mit Werten von $1.5*\mathit{IQR}$ oberhalb des oberen Quartils oder unterhalb des unteren Quartils bezeichnet.

Quellen:

Mit der $\mathit{IQR}$-Methode werden $883$ Datenpunkte als Ausreißer definiert.

Standard Deviation Methode

Bei der Standard Deviation Methode werden mit Hilfe der Standardabweichung und dem Mean Ausreißer identifiziert. Dabei wird der Z-Score wie folgt berechnet:

$$z =\frac{x_i-\mu}{\sigma}$$

In einer Normalverteilung ist davon auszugehen, dass $\mathit{3*\sigma}\;\;$ 99.73% aller Werte enthalten sind. Werte darüber werden in der Regel als Ausreißer angesehen.

Quellen:

Mit der Standard Deviation Methode werden $396$ Datenpunkte als Ausreißer definiert.

Wahl der Ausreißer-Methode

Sowohl bei der Standard Deviation Methode, als auch bei der $\mathit{IQR}$-Methode wurden die starken Ausreißer im Datensatz erkannt und eliminiert. Die $\mathit{IQR}$-Methode hat 883 Datenpunkte eliminiert und den Datensatz stärker beschnitten als die Standard Deviation Methode mit 396 Datenpunkten. Aus den Grafiken ist zu erkennen, dass beide Methoden die Ausreißer effektiv beseitigen und beide Methoden eine legitime Wahl für die Entfernung der Ausreißer darstellen. Für den weiteren Verlauf wurde sich für die Standard Deviation Methode entschieden, da dieser alle Ausreißer erkennt und weniger Datenpunkte als die $\mathit{IQR}$-Methode entfernt.

Logarithmierung der Features

Für einige Machine Learning Algorithmen ist es vorteilhaft, wenn Features einer Normalverteilung folgen. Dies führt dazu, dass die Kostenfunktion den Fehler der Vorhersagen besser minimiert.

Wie in der Grafik zu sehen, sind einige Features, wie zum Beispiel das Feature "residual sugar", nicht normalverteilt und stark in eine Richtung verzerrt. Durch das Logarithmieren dieser Features lassen sich die Datenpunkte mehr zu einer Normalverteilung transformieren. Diese Transformation werden für die Features "residual sugar" und "alcohol" angewendet.

Quellen:

Nach der Logarithmierung gleichen die Features eher einer Normalverteilung.

Aufteilung in Trainings- und Testdaten

Die Aufteilung der Daten in Trainings- und Testdatensätze wird mit dem Train_test_split von Scikit-Learn durchgeführt. Es werden $25\%$ der Daten dem Testdatensatz zugesprochen. Dieser Datensatz wird während dem gesamten Training nicht beachtet. Anhand dem Testdatensatz werden am Ende das optimierte Modell auf die während dem Training ungesehenen Daten evaluiert. Die Aufteilung wird mit dem oben definierten Seed durchgeführt, um die Ergebnisse reproduzierbar zu machen. Die Daten werden während der Aufteilung gemischt und statifiziert getrennt. Stratifizierte Aufteilung bedeutet, dass sich sowohl in dem Trainings- als auch im Testdatensatz die gleiche prozentuale Aufteilung der Zielvariable Weinqualität befinden.

Speichern des Datensatzes

Datenanalyse

Korrelationsmatrix

Mit Hilfe der Korrelationsmatrix lassen sich Korrelationen zwischen den Features und den Features mit der Zielvariablen darstellen. Mit Blick auf die Zielvariable "quality" erkennt man eine moderate Korrelation zu den Features "alcohol", "density" und "chlorides". Daraus lässt sich herleiten, dass diese Features einen höheren Einfluss auf die Vorhersage unserer Modelle nehmen werden. Allerdings sollte man bei einigen Algorithmen Korrelationen zwischen Features vermeiden. Multikollinearität zwischen Features macht die Schätzung des Regressionskoeffizienten instabil und sie wird ungenauer.

Quellen:

Auswahl von Features anhand der Korrelationsmatrix

Zur Minimierung des Problems der Multikollinearität werden einige Features eliminiert. Man erkennt, dass das Feature "alcohol", bzw dessen logarithmierte Form die größte Korrelation zur Zielvariable besitzt. Als Schwellenwert der Korrelation zwischen Features wurde 0.3 gewählt. Durch die Wahl des Features "alcohol" elimieren wir dadurch die Features "total sulfure dioxide", "residual sugar" und dessen logarithmierte Form, "chlorides" und "density". Die nächstgrößte Korrelation der verbleibenden Features finde sich in "volatile acidity". Dieses Feature besitzt keine Korrelationen über unserem Schwellenwert, wodurch keine anderen Features eliminiert werden. Nach diesem Schema wurden die Features "pH", "sulphates" und "citric acid" gewählt und das Feature "fixed acidity" ebenfalls eliminiert.

Daraus erfolgt die Liste folgender Features für den Datensatz der Feature Selection:

Im Laufe des Projekts wird sowohl ein SVR Modell mit dem gesamten Datensatz und ein SVR Modell mit dem Datensatz der Feature Selection trainiert und anschließend evaluiert.

Darstellung der Features mit höchster Korrelation untereinander

Darstellung des Features mit höchster Korrelation zur Zielvariablen:

Eine mäßig-starke Korrelation hat das Feature Alkohol zur Zielvariablen Qualität. Dies wirkt sich positiv auf das spätere Modell aus, da das Feature dadurch einen besseren Informationsgewinn hat.

Funktion zum Laden der Datensätze

Skalierung

In Machine Learning ist die Skalierung von Daten ein wichtiger Schritt. Einige Machine Learning Algorithmen performen besser, wenn sie sie eine ähnliche Größenordnung der Einheiten vorweisen. Dies liegt an der Schrittgröße, die im Minimierungsverfahren gebraucht wird. Bei unterschiedlicher Größenordnung würde man pro Einheit eine Schrittgröße benötigen. Als Skaliermethoden werden meist eine MinMax-Skalierung oder eine Skalierung anhand der Standardabweichung bevorzugt angewandt. Dabei bietet es sich an, die Funktionen StandardScaler() und MinMaxScaler() von Scikit-Learn zu verwenden. Diese zwei Skaliermethoden werden im Laufe des Jupyter Notebooks verglichen, indem sie für den Support Vector Regressor als Hyperparameter mitgegeben werden. Beim Random Forest Regressor macht eine Skalierung keinen Sinn, da dies kein distanzbasiertes Modell ist.

Die Skalierung wird pro Training in der Kreuzvalidierung durchgeführt. So wird bei jedem neuen Training zunächst die Scikit-Learn-Funktionen mit den Trainingsdaten trainiert und anschließend der Trainings- und Validierungsdatensatz mit den Scikit-Learn-Funktionen skaliert.

Quellen:

Machine Learning Modelle

Da die Aufgabe - die Bestimmung der Weinqualität - eine ordinale Regression ist, werden Regressionsalgorithmen benötigt.

Support Vector Regressor Trainingsfunktion

Eins der Machine Learning Modelle, welche wir verwenden ist ein Support Vektor Regressor(SVR). Es ist eine Version, der in der Vorlesung behandelten Support Vektor Maschine. Diese Version wird bei Regressionsproblemen angewandt.

Mit 10.000 Datenpunkte gilt ist Datensatz recht klein und somit kann die libsvm Implementation ohne Bedenken verwendet werden. Diese Implementierung bietet im Gegensatz zur linearen SVR verschiedene Kernel. Bei größeren Datensätzen mit mehreren zehntausend Datenpunkten steigt die Komplexität mehr als quadratisch an.

Da die Scikit-Learn-Implementierung von SVR eine Vielzahl an Parametern besitzt, müssen die korrekten Parameter zunächst mit einem Trainingprozess bestimmt werden.

Die Suche der besten Parameterkombination erfolgt mittels Gridsearch. Da Gridsearch eine Komplexität von $\mathcal{O}(k^n)$ Möglichkeiten besitzt, muss vorab eine Auswahl getroffen werden, welche Parameter ausführlich optimiert werden.

SVR selbst besitzt nur zwei freie Parameter.

Nach vorherigen Tests stellten sich die Daten nicht als linear seperabel heraus. Diese Implemenation verwendet den Radial Bias Kernel, kurz rbf, da dieser gute Ergebnisse lieferte. Es wurde sich gegen den Polynomial Kernel entschieden, da dieser schlechtere Ergebnisse bei erhöhter Laufzeit lieferte.

Der Radial Bias Kernel besitzt eine zusätliche Variable Gamma, welche optimiert werden kann. Standardmäßig wird Gamma mit Hilfe der Trainingsdaten bestimmt.

In den neueren Versionen ist der Standardwert für Gamma auf "scale" gesetzt.

Ein weiterer Optimierungsparameter ist das oben genannte Skalieren. Dies wird mittels einer Pipeline umgesetzt.

Daraus ergeben sich vier Parameter welche mit Hilfe des Gridsearchalgorithmus optimiert werden müssen. Die Funktion kann ebenso mit anderen Kerneln verwendet werden, zum Beispiel "sigmoid", "linear" oder "poly". Der Polynomial Kernel besitzt einen eigenen Parameter Grad("degree"), welche anstelle von Gamma optimiert werden würde.

Quellen: https://scikit-learn.org/stable/modules/generated/sklearn.svm.SVR.html

Random Forest Regressor Trainingsfunktion

Entscheidungsbäume sind in der Lage sich sehr gut auf einen Datensatz anzupassen, allerdings weisen sie sehr oft eine hohe Varianz auf und neigen daher sehr stark zum Overfitting. Daher wurde als zweites Modell der Random Forest Regressor gewählt. Dieser besteht aus mehreren unkorrelierten Entscheidungsbäumen. Dadurch wird das Overfitting von Entscheidungsbäumen vermieden und somit eine bessere Generalisierung ermöglicht.

Für das Modell wird der Random Forest Regressor von Scikit-Learn implementiert. Dieser bietet eine Reihe von Parametern welche in der Hyperparameteroptimierung angepasst werden können. Die optimalen Parameter werden ebenfalls mit dem Gridsearchalgorithmus ermittelt.

Um der Komplexität des Gridsearchalgorithmus entgegenzuwirken werden Parameter ausgewählt, welche ausführlich optimiert werden. Zuvor wurden durch Tests Parameter ermittelt, welche eine signifikante Änderung für das Training bedeuteten. Parameter, welche eine starke Korrelation aufweisen (zb. min_samples_split und min_samples_leaf) haben einen sehr ähnlichen Effekt auf das Training, weshalb lediglich einer dieser Parameter optimiert wird.

Aus diesen Gründen werden folgende Parameter in der Hyperparameteroptimierung angewandt:

Die anderen Parameter werden auf Default gesetzt oder auf Werte, die bei zuvor durchgeführten Tests am sinnvollsten erschienen.

Hyperparametersuche der Modelle

Ausführung der Trainingsfunktionen der Modelle. Nach jedem Modelldurchlauf werden die Ergebnisse in eine .csv Datei zwischengespeichert.

Hyperparametersuche Random Forest Regressor

Hyperparametersuche SVR mit Feature Selection

Hyperparametersuche SVR ohne Feature Selection

Evaluation des Hyperparametertrainings

Im folgenden Kapitel werden die durch Kreuzvalidierung beurteilten Modelle des Random Forest Regressors und der Support Vector Regression untersucht. Das Ziel dieser Evaluation wird sein, die besten Hyperparameter für die jeweiligen Algorithmen zu wählen und für jeden Algorithmus ein adäquates Modell zu trainieren. Diese Modelle werden auf die Testdaten angewandt und sollten damit auch eine gute Generalisierung erreichen.

Random Forest Regressor

Im Nachfolgenden werden die Ergebnisse des Hyperparametertrainings für den Random Forest Regressor dargestellt. Man sieht hier deutlich, dass wir den Besten Mean Squared Error auf den Validierungsdaten bei einer Baumtiefe (max_depth) von 23 und einer minimalen Anzahl an Spaltungen (min_sample_split) von 2 erreichen.

Bei den Funktionen zur Berechnung der maximalen Anzahl an Features, die für eine Aufteilung betrachtet werden, stechen zwei Funktionen heraus. Dies wäre zum Einen die Wurzelfunktion (sqrt), welche von Scikit-Learn durch $round(sqrt(11))$ berechnet wird und zum anderen die Funktion des Logarithmus Dualis, welche durch Scikit-Learn mit $round(log2(11))$ dargestellt wird.

Bei 11 Features ergibt sich, dass die beide Funktionen dasselbe Ergebnis liefern:

$round(log2(11)) = round(sqrt(11))$

Dies ist uns leider erst nach dem Durchlauf der Hyperparameter aufgefallen. Im Laufenden werden wir mit der Wurzelfunktion weiterarbeiten.

Die dreidimensionalen Darstellungen zeigt die Veränderung des Mean Squared Errors mit verändernder maximaler Tiefe (max_depth) und minimaler Aufteilung der Features (min_sample_split).

Zur Ermittlung der optimalen Baumtiefe wird folgend eine zweidimensionale Darstellung verwendet, da hier das Optimum besser erkennbar ist.

In den beiden unterliegenden Grafiken wird jeweils der Mean Squared Error über die Abhängigkeit der maximale Tiefe und der minimalen Aufteilung der Features dargestellt.

In der ersten Grafik wird dabei die maximale Tiefe der Bäume auf 23 gesetzt und die max_feature Methode sqrt verwendet. Wie bereits oben erläutert, bildet diese Kombination die besten Ergebnisse unser Hyperparametersuche ab. Ab einer Tiefe von 20 wird hier erkennbar, dass sich die Ergebnisse kaum verbessern. Das Optimum liegt hierbei bei einer Baumtiefe von 23. Zudem ist erkennbar, dass sich die Laufzeit bei höherer maximaler Tiefe nicht mehr stark verändert. Dies liegt daran, dass bei einer Tiefe von 23 die maximale Tiefe bereits erreicht ist.

In der zweiten Grafik wird eine minimale Aufteilung der Features von zwei und die max_feature Methode sqrt verwendet. Hier wird deutlich, dass die kleinste Aufteilung von 2 Featuren die besten Ergebnisse Erzielen.

Auswahl des Random Forest Regressors:

Durch die vorherige Evaluation der verschiedenen Modelle ergibt sich, dass der Random Forest Regressor bei einer maximalen Tiefe größer 20 und einer minimalen Aufteilung der Features von 2 die besten Ergebnisse erzielt. Da es ersichtlich ist, dass das Model mit dem geringesten MSE auf die Validationsdaten hier die beste Wahl darstellt, wird für die maximale Tiefe der Wert 23 festgelegt.

Im Folgenden werden die von uns gewählten Hyperparametern mit ihren erzielten Metriken dargestellt:

SVR

SVR ohne Feature Selection

Im folgenden Kapitel werden die Ergebnisse der Support Vector Regression ohne Anwendung der Feature Selection evaluiert, um anschließend die Hyperparameter für ein adäquates Modell wählen zu können.

An der Ausgabe der Hyperparameter und deren Validierungs-/Trainingsergebnisse sieht man sehr gut, dass der Durchlauf des Support Verctor Regressors mit der Skalierfunktion StandardScaler die besten Ergebnisse erzielt.

In den beiden unterliegenden Grafiken wird jeweils der Mean Squared Error über die Abhängigkeit der Regularisierungskonstante C und dem Parameter Epsilon dargestellt.

Es ist wie oben erneut erkennbar, dass der StandardScaler bessere Ergebnisse als der MinMaxScaler erreicht. Aus diesem Grund werden hier bereits ausschließlich diese Modelle betrachtet.

In der ersten Grafik ist deutlich zu erkennen, dass die Zeitkomplexität mit größer werdendem Epsilon linear abnimmt.

Die zweite Grafik zeigt, dass der ideale Mean Squared Error bei einer Regularisierungskonstante von etwa 1,429 liegt. Da die Regularisierung im Funktionsaufruf von Scikit-Learn proportional invers zu C ist, bedeutet dies für unser Modell, dass die Toleranz gegenüber größerer Gewichte zu besseren Ergebnissen führt.

In den unteren beiden Grafiken wird der Mean Squared Error abhängig von den beiden Parameter C und Epsilon noch einmal dreidimensional dargestellt.

SVR mit Feature Selection

Im Folgenden Kapitel werden die Ergebnisse der Support Vector Regression mit Anwendung der Feature Selection evaluiert um anschließend das beste Modell wählen zu können.

In der Ausgabe der Hyperparameter und deren Validierungs-/Trainingsergebnisse sieht man sehr gut, dass der Durchlauf des Support Vector Regressors mit der Scikit-Learn Funktion MinMaxScaler die besten Ergebnisse erzielt. Aus diesem Grund werden hier bereits ausschließlich Modelle betrachtet, bei der die Daten mit Hilfe von MinMax skaliert wurden.

Für den Parameter Gamma wird der von Scikit-Learn vorgegebene Wert "scale" verwendet.

In der dreidimensionalen Grafik wird der Mean Suqared Error in Abhängigkeit von den Parametern C und Epsilon grafisch dargestellt. Bereits hier ist zu erkennen, dass unsere Modelle bei Andwendung von Feature Selection eine schlechtere Vorhersage auf die Validierungsdaten vorweisen.

Die Ursache dafür kann am Informationsverlust liegen, wenn Features durch die Feature Selection nicht in den Lernprozess aufgenommen werden.

Auswahl des SVR Modells

Es wird nur ein Modell für die SVR ausgewählt. Da der Support Vector Regressor bessere Ergebnisse auf den nicht selektierten Datensatz erzielt, wird diese Vorgehensweise gewählt. Aus diesem Grund wird nur ein Modell auf den Datensatz ohne Feature Selection trainiert .

Training der endgültigen Modelle mit den oben bestimmten Hyperparametern

Hier werden die oben ausgewählten Modelle erneut auf den Trainingsdatensatz trainiert, um sie anschließend auf dem Testdatensatz, welcher zu Begin zur Seite gelegt wurde, bewerten zu können.

Ergebnisse

Random Forest Regression

In der folgenden Grafik werden die Regressionsmetriken der Genauigkeit und Mean Squared Error dargestellt. Da unsere Zielvariable aus diskreten Werten besteht und unsere Regressionsvorhersagen stetig sind, muss zur Berechnung der Genauigkeit der Vorhersagewert gerundet werden.

Der Random Forest Regressor erzielt gute Ergebnisse auf allen Datensätze. Die deutlich besseren Ergebnisse auf den Trainingsdatensatz lassen auf eine hohe Varianz deuten.

Das Modell erzielt nahezu die gleichen Ergebnisse auf Test- und Validierungsdatensatz.

Die folgende Tabelle zeigt die Wichtigkeit der Features auf die Vorhersage. Wie bereits erwartet, hat der Alkoholgehalt bzw der logarithmierte Alkoholgehalt den größten Einfluss auf die Vorhersage des Modells.

Im Kapitel Datenanalyse wurde bereits festgestellt dass das Feature Alkoholgehalt eine mäßig-starke Korrelation zur Zielvariablen Qualität aufweist.

Hier wird die Vorhersage des Modells noch einmal den wahren Werten gegenübergestellt, dabei werden sowohl die gerundeten Vorhersagen als auch die stetige Vorhersage dargestellt.

Die Confusion Matrix gibt uns etwas mehr Aufschluss über die Qualität unseres Modells. Hier werden zusätzlich für alle Klassen der Recall und Precision berechnet.

Recall: $\frac{TP}{TP+FN}$
Precision $\frac{TP}{TP+FP}$

Man kann der Tabelle entnehmen, dass für die Qualitäten 8 und 4 eine sehr hohe Precision berechnet wurde, was daran liegt dass wenige Datenpunkte dieser Klasse sehr gut vorhergesagt werden konnten. Der hier interessantere Recall Wert gibt uns jedoch Aufschluss darüber, dass viele Weine der Qualität 4 und 8 nicht richtig klassifiziert wurden.

Ein besseres Ergebnis sieht man bei den Weinen der Qualität 5,6 und 7. Dies ist wenig überraschend, da für diese Klassen die meisten Daten zur Verfügung standen.

SVR ohne Featureselection

In der folgenden Grafik werden die Regressionsmetriken der Genauigkeit und Mean Squared Error dargestellt.

Wie zuvor der Random Forest Regressor erzielt auch der Support Vector Regressor sehr gute Ergebnisse. Das Modell performt auf die Testdaten ähnlich gut wie auf den Validierungsdaten. Es ist allerdings wieder klar zu erkennen, dass die Genauigkeit, als auch der Mean Squared Error auf den Trainingsdaten deutlich besser ist.

Hier wird die Vorhersage des Models noch einmal den wahren Werten gegenübergestellt, dabei werden sowohl die gerundeten Vorhersagen als auch die stetige Vorhersage dargestellt.

Wie schon die Confusion Matrix bei dem Random Forest Regressor zeigt sich der unausgeglichene Datensatz ebenfalls in den Ergebnissen der Confusion Matrix des Support Vector Regressors.

Additional Work

Ensemble Modell

Zusätzlich zu den oben beschriebenen Modellen, wurde ein Voting Ensemble der beiden Algorithmen erstellt.

Aus den anschließenden Plots ist zu erkennen, dass das erstellte Ensemble Modell nicht wesentlich verbessert. Dies könnte daran liegen, dass der Random Forest Regressor bereits intern ein Ensemblemodell aus vielen verschiedenen Entscheidungsbäumen ist und bereits bessere Ergebnisse als der Support Vector Regressor erzielt.

Fazit

Die Ergebnisse beider Modelle sind vorzeigbar. Beide Modelle haben einen guten Mean Squared Error auf den Testdatensatz. Das Random Forest Regressor Modell hat dabei bessere Ergebnisse als der Support Vector Regressor erzielt. Die Feature Selection hat bei diesem Datensatz zu starkem Informationsverlust und somit zu deutlich schlechtere Ergnissen geführt.

Die schlechteren Ergebnisse bei den weniger vertretenen Klassen waren zu erwarten und akzeptabel, da diese auf Sicht des gesamten Datensatzes nur in sehr kleiner Anzahl vorkommen. Eine Gewichtung oder Oversampling dieser Gruppen zur Verschlechterung der Precision der häufigeren vorkommenen Klassen führen. Dies kann dazu führen, dass Modelle auf zukünftige Daten die Vorhersage der weniger vorkommenen Klassen präferenzieren und somit die Klassenverteilung der Vorhersage und die der realen Werte abweichen.

Grundsätzlich muss man mit diesem Datensatz kritisch umgehen da die subjektive Einordnung durch Weinexperten keine wissenschaftlich basierte Einordnung ist und schlechtere Ergebnisse von Modellen auch auf eine Inkonsistenz dieser Einordnung zurückzuführen werden könnte.